﻿$(function() {

    $.ajax({
        url: DBSystem.config.urlProductos,
        dataType: "json",
        success: function (data) {

            var productos = $("#rowProductoTemplate").render(data);

            $("#tblProductos tbody").html(productos);
        },
        statusCode: {
            405: function() {
                alert("Metodo no permitido");
            }
        }
    });

    $("#btnBuscar").click(function() {
        var criterio = $("#txtCriterio").val();

        $.ajax({
            url: DBSystem.config.urlProductos + "?criterio=" + criterio,
            dataType: "json",
            success: function(data) {
                var productos = $("#rowProductoTemplate").render(data);
                $("#tblProductos tbody").html(productos);
            }
        });

    });

    $("#tblProductos tbody").on("click", "a.editar", function(e) {
        e.preventDefault();
        var id = $(this).attr("data-id");

        loadCategorias();
        
        $.ajax({
            url: DBSystem.config.urlProductos + id,
            dataType: "json",
            success: function (data) {

                $("#btnGuardar").attr("data-opc", "editar");
                $("#txtId").val(data.Id);
                $("#txtCodigo").val(data.Codigo);
                $("#txtDescripcion").val(data.Descripcion);
                $("#txtCategoria").val(data.CategoriaId);
                $("#txtPrecio").val(data.Precio);
                $("#txtStock").val(data.Stock);

                $("#cbCategorias option[value='" + data.CategoriaId + "']").each(function () {
                    $(this).attr("selected", "selected");
                });
                
                $("#detalleProducto").show("slow");
            }
        });
    }).on("click","a.delete", function(e) {
        e.preventDefault();

        var id = $(this).attr("data-id");
        var desc = $(this).attr("data-desc");
        var row = $(this).closest("tr");

        var rpt = confirm("Dese quitar el producto: " + desc);

        if (rpt) {
            $.ajax({
                url: DBSystem.config.urlProductos + "/" + id,
                type: "DELETE",
                success: function() {
                    row.hide(function() {
                        $(this).remove();
                    });
                }
            });
        }
    });

    $("#btnCancelar").click(function() {
        $("#detalleProducto").hide("slow");
    });

    $("#btnNuevo").click(function() {
        $("#btnGuardar").attr("data-opc", "nuevo");

        loadCategorias();

        $("#txtId").val("0");
        $("#txtCodigo").val("");
        $("#txtDescripcion").val("");
        $("#txtCategoria").val("");
        $("#txtPrecio").val("");
        $("#txtStock").val("");

        $("#detalleProducto").show("slow");
   
    });

    $("#btnGuardar").click(function() {
        var opc = $(this).attr("data-opc");
        var verbo = "";

        if (opc == "editar")
            verbo = "PUT";
        else if (opc == "nuevo")
            verbo = "POST";

        if (verbo != "") {
            
            var producto = new Object();

            producto.Id = $("#txtId").val();
            producto.Codigo = $("#txtCodigo").val();
            producto.Descripcion = $("#txtDescripcion").val();
            producto.Precio = $("#txtPrecio").val();
            producto.Stock = $("#txtStock").val();
            producto.CategoriaId = $("#txtCategoria").val();

            $.ajax({
                url: DBSystem.config.urlProductos,
                type: verbo,
                data: JSON.stringify(producto),
                contentType: "application/json; charset=utf-8",
                statusCode: {
                    200: function() {
                        alert("el producto se actulizo correctamente");
                        $("#detalleProducto").hide("slow");
                    },
                    201: function() {
                        alert("el producto se registro correctamente");
                        $("#detalleProducto").hide("slow");
                    }
                }                
            });
        }
    } );

});

function loadCategorias() {
    $.ajax({
        url: DBSystem.config.urlCategorias,
        dataType: "json",
        success: function (data) {
            var categorias = $("#categoriaTemplate").render(data);
            $("#cbCategorias").html(categorias);
        }
    });
}